menutrackeritem: Be more careful with accel changes
authorMatthias Clasen <mclasen@redhat.com>
Thu, 17 Jun 2021 12:42:03 +0000 (08:42 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 17 Jun 2021 12:50:26 +0000 (08:50 -0400)
In some cases (such as when getting a new parent), the
action muxer doesn't know exactly which detailed actions
have changed accels, so we call primary_accel_changed with
just an action name.

Make the menu tracker item handle that case by matching
either against the detailed name or the the action name.

gtk/gtkmenutrackeritem.c

index 134831fda6a9f99363a04afb1ccca40539d3c9ba..4e191221e223be035ab028b1ebc3f8b74875b6a4 100644 (file)
@@ -463,8 +463,12 @@ gtk_menu_tracker_item_primary_accel_changed (GtkActionObserver   *observer,
                                              const char          *action_and_target)
 {
   GtkMenuTrackerItem *self = GTK_MENU_TRACKER_ITEM (observer);
+  const char *action;
 
-  if (g_str_equal (action_and_target, self->action_and_target))
+  action = strrchr (self->action_and_target, '|') + 1;
+
+  if ((action_and_target && g_str_equal (action_and_target, self->action_and_target)) ||
+      (action_name && g_str_equal (action_name, action)))
     g_object_notify_by_pspec (G_OBJECT (self), gtk_menu_tracker_item_pspecs[PROP_ACCEL]);
 }